#ifndef VECTOR_TO_VECTOR_H
#define VECTOR_TO_VECTOR_H

// General Cases:
// +=
// +
// -=
// Special Cases:
// ^

// General Cases
template< typename T, unsigned int N >
Vector<T,N>& operator+=( Vector<T,N>& a, const Vector<T,N>& b );

template< typename T, unsigned int N >
Vector<T,N> operator+( const Vector<T,N>& a, const Vector<T,N>& b );

template< typename T, unsigned int N >
Vector<T,N>& operator-=( Vector<T,N>& a, const Vector<T,N>& b );

template< typename T, unsigned int N >
Vector<T,N> operator-( const Vector<T,N>& a, const Vector<T,N>& b );

template< typename T, unsigned int N >
T operator*( const Vector<T,N>& a, const Vector<T,N>& b );

// Special Cases
template< typename T >
Vector<T,3> operator^( Vector<T,3>& a, Vector<T,3>& b );

#endif
